TESsnip RecordStructure.xml format

The basic layout consists of a single 'Records' root node, which contains one or more 'Record' and 'Group' child nodes, each containing one or more 'Subrecord' child nodes, which in turn contain one or more 'Element' child nodes. Each node has a different set of valid attributes. A Record can also contain a Group node, in which case the group must have no child nodes, and must have an id attribute that matches it to a Group node under the Records node. (Groups provide an easy way to save having to type out subrecords multiple times when the format of a subrecord is indentical in several different records)

If you make any changes to the xml file and want to make them available for others to use, or for them to be included in the original download, update the wiki at http://falloutmods.wikia.com/wiki/Record_Structure_XML

XXXXXXXXXXXXXX
XXX Record XXX
XXXXXXXXXXXXXX
name (required): the 4 letter code of the record

desc (required): A human readable description of what the record contains

XXXXXXXXXXXXXX
XXX Record XXX
XXXXXXXXXXXXXX
id (required): A numeric id by which the group is referenced from a Record

XXXXXXXXXXXXXXXXX
XXX Subrecord XXX
XXXXXXXXXXXXXXXXX
name (required): the 4 letter code of the subrecord

desc (required): A human readable description of the subrecord contents

repeat: The size of the following subrecord block that can be repeated one or more times. Combine with the optional attribute if the block can appear zero or more times. A value of 1 will repeat just that current record. If omitted, defaults to 0.

optional: The size of the following subrecord block that can be skipped. If omitted, defaults to 0.

size: A size in bytes of the subrecord. The subrecord will be skipped without error if the name matches but the size doesn't. Can be used in the place of conditionals where the different subrecords have different sizes.

notininfo: must be one of 'true' or 'false'. If omitted defaults to false. If true, the subrecord will be skipped when formatting the record into text. Subrecords that make use of the group attribute must have this set to true.

condition: If it exists, a given value is compared the value of a piece of data in a previous subrecord. If the comparison returns false, this record is skipped. Must be one of 'exists', 'missing', 'equal', 'not', 'less', 'lessequal', 'greater', 'greaterequal', 'contains', 'startswith', or 'endswith'. The latter 3 work only for string comparisons, and the greater/less than only work on numeric values.

condid (required if condition is used): An integer id that must match up with a previous condid attribute attached to an element.

condvalue (required if condition is used): The value to compare against in a comparison.

usehexeditor: If present and set to a value of "true" the subrecord will open in the normal hex editor instead of an autogenerated subrecord editor

XXXXXXXXXXXXXXX
XXX Element XXX
XXXXXXXXXXXXXXX
name (required): A short human readable description of the element

type (required): The type of data. Must be one of 'byte', 'short', 'int', 'float', 'formid', 'string' or 'blob'.

desc: A longer human readable description

notininfo: Performs the same task as the subrecord attribute, but will only hide the element and not the whole subrecord. Defaults to false if omitted.

group: Still valid, but use of this should be avoided wherever possible. Use conditionals instead.

condid: An integer, used to match up with the condid in a conditional subrecord. A value greater than 0 tells tessnip that this element will be compared to by a later subrecord. Defaults to 0 if omitted.

reftype (optional, only valid if type is formid): If the element is a formid that is restricted to point at a single type of record, set this to the appropriate 4 letter record code.

multiline (optional, only valid if type is string): Used as a hint by the tessnip record editor to use a bigger textbox for this field, and to allow linebreaks. Defaults to false if omitted.

options: A semicolon delimited list of descriptions and values that the field may take. (e.g. 'blue;0;green;1;red;2') Using this tag doesn't force the field to take one of the specified values, but will cause a combo box to appear on the record editor as an aid to the user.

repeat, optional: Performs the same tasks as the subrecord attributes, but with two exception: the only valid values are 0 or 1, and it may only be applied to the last element of a subrecord

hexview: If present and set to a value of 'true', the field is displayed in base 16 instead of base 10. Doesn't effect the subrecord editor.

flags: If present, must contain a semicolon delimited list of flags, starting from the first bit and working up as far as you're interested. Unknown or meaningless flags can be left blank. (e.g. flags="bit 1;;bit 3") Doesn't effect the subrecord editor, but only adds information to the subrecord info.